# set

##集合常量
x={1,2,3}
type(x)
set({1,2,3})
set((1,2,3))
set([1,2,3])
set('abcde')    #{'a', 'b', 'c', 'd', 'e'}
set()           #空集合
type({})        #注意，这是dict类型！

{x*x for x in [1,2,3,4]}     #{1, 4, 9, 16}
{x for x in 'abcd'}          #{'a', 'b', 'c', 'd'}
{x*2 for x in 'abcd'}        #{'aa', 'bb', 'cc', 'dd'}


##集合运算
x={1,2,'a','bc'}
y={1,'a',5}
len(x)      #4
'a' in x    #True,a在x集合内？
x-y         #{2, 'bc'}
x|y         #{1, 2, 5, 'a', 'bc'}
x&y         #{1, 'a'}
x^y         #{2, 'bc', 5}
x<y         #False
{1,2}<x     #True

##集合操作
x={1,2}
x
y=x.copy()
y
x.add('abc')
x
x.update({10,20})
x
x.update('abc')
x
x.remove(10)
x
x.discard(20)
x
x.pop()             #随机删除一个元素并输出
x.clear()           #清空
x

x={1,2,3}
for a in x:
    print(a)

x.add()             #只可添加不变的元素，需要添加list，set请用update方法
x.add({4,5})        #报错
x.update({4,5})     #update将参数拆成一个一个添加进去就没问题
x
x.add((1,2,3))      #这是可以的，因为(1,2,3)是元组，元组是不可变的
x                   #{1, 2, 3, 4, 5, (1, 2, 3)}     看清楚结果是否是自己想要的，和update效果是不一样的

## 冻结集合frozenset
x=frozenset([1,2,3])
x                   #frozenset({1, 2, 3})

y={1,2}
y
y.add(x)            #x是不可变集合了，可以add进去了
y                   #{1, 2, frozenset({1, 2, 3})}

x.add(10)           #报错，说了是不可变了哦








